package cn.zifangsky.common;

import java.io.Serializable;


public class ReturnModel<T> implements Serializable {
	private static final long serialVersionUID = 6808675974246095434L;

	private String code;
	private String message;
	private T data;

	public ReturnModel() {
		super();
	}

	public ReturnModel(String code, String message) {
		super();
		this.code = code;
		this.message = message;
	}

	public ReturnModel(String code, String message, T data) {
		super();
		this.code = code;
		this.message = message;
		this.data = data;
	}

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public T getData() {
		return data;
	}

	public void setData(T data) {
		this.data = data;
	}

	/**
	 * 设置提示信息并返回
	 * 
	 * @param msg
	 * @return
	 */
	public ReturnModel setMsgAndReturn(String msg) {
		setMessage(msg);
		return this;
	}

	public ReturnModel setMsgAndReturn(String code, String msg) {
		setMessage(msg);
		setCode(code);
		return this;
	}

	public ReturnModel setCodeAndReturn(String code) {
		setCode(code);
		return this;
	}

	public ReturnModel error(String msg) {
		setCode("500");
		setMessage(msg);
		setData(null);
		return this;
	}

	public ReturnModel data(T data) {
		setCode("200");
		setMessage("");
		setData(data);
		return this;
	}




	public ReturnModel error(Exception e) {
		return error(e, "系统错误,请联系开发人员");
	}
	
	public ReturnModel ok(String msg ,T data) {
		setCode("200");
		setMessage(msg);
		setData(data);
		return this;
	}
	
	public ReturnModel ok(String msg) {
		setCode("200");
		setMessage(msg);
		return this;
	}
	
	public ReturnModel ok() {
		setCode("200");
		return this;
	}

	public ReturnModel error(Exception e, String msg) {
		String methodName = Thread.currentThread().getStackTrace()[2].getMethodName();
		System.out.println(methodName + ":" + msg);
		e.printStackTrace();
		this.error(msg);
		return this;
	}
	
	

}
